package com.njtech.pet.service;

import com.njtech.pet.entity.Friend;
import com.njtech.pet.entity.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Author:helloboy
 * Date:2020-03-22 19:26
 * Description:<描述>
 */
public interface FriendService {
    /**
     * 插入一条数据
     * @param row 新纪录
     * @return 修改行数
     */
    int insert(Friend row);

    /**
     * 修改一条数据
     * @param row 新纪录
     * @return 修改行数
     */
    int updateByFriendId(Friend row);

    /**
     * 查找某一用户的好友
     * @param user 用户
     * @param state Friend类的状态【用于区分查找好友请求与所有好友】
     * @param beginDate 起日期 可NULL
     * @param endDate 起日期 可NULL
     * @param orderState 用于描述排序的语句，如u.username asc
     * @return 用户集合
     */
    List<Friend> selectByUser(@Param("user") User user, @Param("state")String state, @Param("beginDate")String beginDate, @Param("endDate")String endDate, @Param("orderState")String orderState);
    /**
     * 查找某一用户的好友
     * @param friend 用户位置的用户
     * @param state Friend类的状态【用于区分查找好友请求与所有好友】
     * @param beginDate 起日期 可NULL
     * @param endDate 起日期 可NULL
     * @param orderState 用于描述排序的语句，如u.username asc
     * @return 用户集合
     */
    List<Friend> selectByFriend(@Param("friend")User friend,
                                @Param("state")String state,
                                @Param("beginDate")String beginDate,
                                @Param("endDate")String endDate,
                                @Param("orderState")String orderState);

    /**
     * select by friend id
     * @param id friend id
     * @return result
     */
    Friend selectByFriendId(@Param("id") Integer id);

    /**
     * 判断有没有A--->B的指定双向数据
     * @param uid   用户id
     * @param fid   用户id
     * @return      提示信息
     */
    String sendRequest(Integer uid,Integer fid);

    /**
     * 同意好友请求
     * @param friendId    好友关系id
     * @param fid        当前执行操作用户id
     * @return           提示信息
     */
    String acceptFriend(Integer friendId,Integer fid);

    /**
     * 删除好友请求
     * @param friendId  好友关系id
     * @param uid      执行操作的A用户
     * @return         提示信息
     */
    String deleteFriend(Integer friendId,Integer uid);

    /**
     * 找到当前用户的好友提示消息，
     * @param uid  当前操作用户id
     * @return
     */
    List<Friend> findTip(Integer uid);

}
